import {
    getQiniuToken,
    uploadQiniu
} from '@/API/api';

export default {
    namespaced: true,
    state: {

    },
    getters: {

    },
    mutations: {

    },
    actions: {
        async upload(o, fileList) {
            // 接收fileList
            if (!Array.isArray(fileList) || fileList.length === 0) { //如果他不是一个数组，或者他的长度为0就返回一个空数组
                return [];
            }

            // 如果是多张图片的话 我们需要多个上传任务
            // Promise.all 接收一个数组 数组里面是多个promise对象
            // 检测所有的Promise都成功以后 把他们所有的resolve的值组成新数组 并且返回出去
            let task = fileList.map((v) => {
                return new Promise((resolve, reject) => {
                    // 生成一个随即名字
                    let file = v.file;
                    let {
                        type
                    } = file; //拿到上传文件的type

                    //二进制文件

                    type = type.split("/")[1];

                    //重新命名
                    let file_name = `${new Date().getTime()}_${Math.random().toString(36).slice(2)}.${type}`;

                    getQiniuToken().then(({
                        token
                    }) => {
                        const formdata = new FormData();
                        formdata.append("file", file);
                        formdata.append("token", token);
                        formdata.append("key", file_name);

                        // 上传到七牛云的服务器

                        uploadQiniu(formdata).then((res) => {
                            resolve(`http://toutiao.longxiaokj.com/` + res.key);
                        });
                    });
                });
            });
            // console.log(task);
            let imgList = await Promise.all(task);
            return imgList;
        },
    }
}